class Solution {
    public String convert(String s, int numRows) {
        if(numRows == 1) return s;
        StringBuilder ss = new StringBuilder();
        int d = 2 * numRows - 2,n = s.length();

        //处理第一行
        for(int i = 0;i < n;i += d)
            ss.append(s.charAt(i));
        //处理中间行
        for(int k = 1;k < numRows - 1;k++) { // 依次枚举中间行
            // 可能会出现i < n 而 j 不小于 n 的情况
            for(int i = k,j = d - i;i < n || j < n;i += d,j += d) {
                // 判断 i 和 j 是否有效
                if(i < n) ss.append(s.charAt(i));
                if(j < n) ss.append(s.charAt(j));
            }
        }
        //处理最后一行
        for(int i = numRows - 1;i < n;i += d)
            ss.append(s.charAt(i));

        return ss.toString();

    }
}